package cn.tedu.ectends;

import org.junit.jupiter.api.Test;

/*本类用于测试继承中成员方法的使用*/
public class TestExtends2 {
    @Test
    public void test() {
        Father2 f = new Father2();

        Son2 s = new Son2();
        f.eat();
        s.eat();
        s.study();

    }
}

class Father2 {

    public void eat() {
        System.out.println("爸爸爱吃肉");
    }

}

class Son2 extends Father2 {


    /*OCP原则，面向修改关闭 面向扩展开放======只允许功能拓展，不允许修改源代码*/
    //修改父类原有的功能----不允许修改父类的源代码
    /*重写的规则
    * 和父类的方法签名保持一致【方法名&参数列表】
    * 然后去修改子类中的本方法实现，父类的功能并没有被改变
    * 方法修饰符>=父类的修饰符
    返回值类型<=父类的返回值类型
    * 重写时，子类必须拥有可以重写的权限，子类无权修饰父类的私有方法
     */


    @Override/*这是一个注解，可以理解为一个标签。用来标记此方法是不是一个重写的方法*/
    public void eat() {

        System.out.println("老虎不在家，猴子称霸王");
    }

    public void study() {
        System.out.println("包粽子");
    }
}